home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC]
/
NeXTSTEP 3.3 Dev Intel.iso
/
NextDeveloper
/
Headers
/
mach-o
/
dyld_debug.h
< prev
next >
Wrap
Text File
|
1994-08-11
|
3KB
|
107 lines
#ifndef _DYLD_DEBUG_
#define _DYLD_DEBUG_
#import <mach/mach.h>
/*
* The dyld debugging API.
*/
enum dyld_debug_return {
DYLD_SUCCESS,
DYLD_INCONSISTENT_DATA,
DYLD_INVALID_ARGUMENTS,
DYLD_FAILURE
};
struct dyld_debug_module {
struct mach_header *header;
unsigned long vmaddr_slide;
unsigned long module_index;
};
enum dyld_event_type {
DYLD_IMAGE_ADDED,
DYLD_MODULE_BOUND,
DYLD_MODULE_REMOVED,
DYLD_MODULE_REPLACED,
DYLD_PAST_EVENTS_END
};
struct dyld_event {
enum dyld_event_type type;
struct dyld_debug_module arg[2];
};
extern enum dyld_debug_return _dyld_debug_defining_module(
task_t target_task,
unsigned long send_timeout,
unsigned long rcv_timeout,
boolean_t inconsistent_data_ok,
char *name,
struct dyld_debug_module *module);
extern enum dyld_debug_return _dyld_debug_is_module_bound(
task_t target_task,
unsigned long send_timeout,
unsigned long rcv_timeout,
boolean_t inconsistent_data_ok,
struct dyld_debug_module module,
boolean_t *bound);
extern enum dyld_debug_return _dyld_debug_bind_module(
task_t target_task,
unsigned long send_timeout,
unsigned long rcv_timeout,
boolean_t inconsistent_data_ok,
struct dyld_debug_module module);
extern enum dyld_debug_return _dyld_debug_subscribe_to_events(
task_t target_task,
unsigned long send_timeout,
unsigned long rcv_timeout,
boolean_t inconsistent_data_ok,
void (*dyld_event_routine)(struct dyld_event event));
/*
* _dyld_debug_add_event_subscriber() uses the mig interface functions below
* to dispatch the dyld event messages from the subscriber port specified.
*/
extern enum dyld_debug_return _dyld_debug_add_event_subscriber(
task_t target_task,
unsigned long send_timeout,
unsigned long rcv_timeout,
boolean_t inconsistent_data_ok,
port_t subscriber);
/*
* These structures should be produced by mig(1) from the mig generated files
* but they are not. These are really only needed so the correct size of the
* request and reply messages can be allocated.
*/
struct _dyld_event_message_request {
msg_header_t head;
msg_type_t eventType;
struct dyld_event event;
};
struct _dyld_event_message_reply {
msg_header_t head;
msg_type_t RetCodeType;
kern_return_t RetCode;
};
#ifndef mig_internal
/*
* _dyld_event_server() is the mig generated routine to dispatch dyld event
* messages.
*/
extern boolean_t _dyld_event_server(
struct _dyld_event_message_request *request,
struct _dyld_event_message_reply *reply);
#endif
/*
* _dyld_event_server_callback() is the routine called by _dyld_event_server()
* that must be written by users of _dyld_event_server().
*/
extern void _dyld_event_server_callback(
port_t subscriber,
struct dyld_event event);
#endif /* _DYLD_DEBUG_ */